IAMユーザーのMFAをAWS CLIで無効化する
AWSでは、特権 のある IAM ユーザーに対して多要素認証(MFA)を有効にして AWS リソースを保護することが推奨されています。
MFA を有効にすることで、 ユーザー名とパスワード (ユーザーが既知の第 1 要素) と、 AWS MFA デバイスからの認証コード (ユーザーが所有している第 2 要素) の入力を求められます。
MFA 運用をしていると、認証デバイスの紛失や故障により、多要素認証できないシチュエーションに陥る事があります。
このようなケースでは、何らかの方法で MFA を突破する必要があります。
今回紹介するのは、AWS IAM リソースを更新可能なアクセスキーが手元にある前提で、AWS CLI から IAM ユーザーの MFA を無効化する方法です。
ルートアカウントに対して完全にお手上げの場合は、次のブログに従い、MFAをリセットしてください。
やりたいこと
MFA が有効になった IAM ユーザー(mfa-test
)から MFA を無効化する
前提
- ルートアカウント情報は知らない
- AWS IAM ユーザーに MFA が設定されている
- 認証デバイスを使えない
- AWS IAM リソースを更新可能なアクセスキーは手元にある
IAM ユーザーに設定された MFA デバイスを確認
まずは IAM ユーザーに設定された MFA デバイスを確認します。
iam list-mfa-devices
API を利用します。
- ユーザー名(
--user-name
)
を指定します。
$ aws iam list-mfa-devices --user-name mfa-test { "MFADevices": [ { "UserName": "mfa-test", "SerialNumber": "arn:aws:iam::123456789012:mfa/mfa-test", "EnableDate": "2017-12-22T17:10:40Z" } ] }
IAM ユーザーの MFA を無効化
iam deactivate-mfa-device
API を利用します。
- ユーザー名(
--user-name
) - 認証デバイスのシリアル番号(
--serial-number
)
を指定します。
$ aws iam deactivate-mfa-device \ --user-name mfa-test \ --serial-number arn:aws:iam::123456789012:mfa/mfa-test $
MFA が無効化されていることを確認します。
$ aws iam list-mfa-devices --user-name mfa-test { "MFADevices": [] }
管理コンソールから MFA を再設定
MFA を無効化すれば、管理コンソールはユーザー名とパスワード情報だけでログインできます。
ログイン後は次の画面から速やかに MFA を再設定して下さい。
無効化した仮想MFAデバイスの削除
仮想認証デバイスを無効化しても、IAM ユーザーとの紐付けのないまま仮想認証デバイスは残ります。
$ aws iam list-virtual-mfa-devices { "VirtualMFADevices": [ // 紐付けのない(Unassigned)デバイス { "SerialNumber": "arn:aws:iam::123456789012:mfa/mfa-test" }, // 紐付けのある(Assigned)デバイス { "SerialNumber": "arn:aws:iam::123456789012:mfa/dummy", "EnableDate": "...", "User": { "PasswordLastUsed": "...", "CreateDate": "...", "UserId": "123456789012", "Arn": "arn:aws:iam::123456789012:root" } }, ... }
この宙ぶらりんな仮想デバイスは iam delete-virtual-mfa-device
API で削除できます。
$ aws iam delete-virtual-mfa-device --serial-number arn:aws:iam::123456789012:mfa/mfa-test $
$ aws iam list-virtual-mfa-devices --assignment-status Unassigned
とすれば、このように IAM ユーザーとの紐付けがない(Unassigned)仮想デバイス一覧を取得できます。
まとめ
特殊な前提条件のもとで API 経由で MFA を無効化する手順を紹介しました。
今回の記事が何かのタイミングでがお役に立てば幸いです。